from langchain.text_splitter import RecursiveCharacterTextSplitter
from tool import custom_print

"""
RecursiveCharacterTextSplitter
    官方文档：https://python.langchain.com/docs/modules/data_connection/document_transformers/text_splitters/recursive_text_splitter
    1.RecursiveCharacterTextSplitter 分割器允许以列表的形式定义多个分割规则；
    2.此分割器会以递归地形式对文本进行分块，直到块的大小接近 chunk_size；
    3.由于默认的规则遵循英文习惯，所以可自定义为中文的分段规则：
    4.keep_separator 设置为 False 可保证分块结果中不会把 “。” 单独分成一块。
    
"""
with open('test3.txt', encoding='utf-8') as f:
    state_of_the_union = f.read()

# 采用 段 > 行 > 句 > 硬分割 的规则
text_splitter = RecursiveCharacterTextSplitter(
    separators=["\n\n", "\n", "。", ""],
    chunk_size=70,
    chunk_overlap=0,
    length_function=len,
    keep_separator=False
)

texts = text_splitter.create_documents([state_of_the_union])
custom_print.print_all(texts)

"""
输出结果：
    **************************************开始遍历**************************************
    总个数：18
    --------------------------------------分割线---------------------------------------
    本文本块长度：68
    1111111111111111111，1111111111111111111111111111，1111111111111111111
    --------------------------------------分割线---------------------------------------
    本文本块长度：13
    1111111111111
    --------------------------------------分割线---------------------------------------
    本文本块长度：65
    22222222222222222222222222222222222222222222222，22222222222222222
    --------------------------------------分割线---------------------------------------
    本文本块长度：15
    222222222222222

"""